/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.tarifador.view;

import br.com.tarifador.controller.CentroDeCustoRN;
import br.com.tarifador.dataModel.CentroDeCustoDataModel;
import br.com.tarifador.model.CentroDeCusto;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.hibernate.HibernateException;
import org.primefaces.context.RequestContext;

/**
 *
 * @author charles
 */
@ManagedBean
@SessionScoped
public class CentroDeCustoBean {

    private CentroDeCustoRN centroDeCustoRN = new CentroDeCustoRN();
    private List<CentroDeCusto> listaCentroDeCusto;
    private CentroDeCusto centroDeCustoSelected;
    private CentroDeCustoDataModel dptoModel;

    public void salvarCentroDeCusto() {
        boolean salvar = false;
        try {
            salvar = centroDeCustoRN.salvaCentroDeCusto();
        } catch (HibernateException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao consultar o banco de dados" + e.getMessage(), ""));
        } catch (Throwable e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados!" + e.getMessage(), ""));
        }
        if (salvar == false) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar dados em brancos!", ""));
        } else {
            listaCentroDeCusto();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_INFO, "Operacao relizada com sucesso!!", ""));
        }
    }

    public void listaCentroDeCusto() {
        listaCentroDeCusto = new ArrayList<CentroDeCusto>();
        try {
            listaCentroDeCusto = centroDeCustoRN.listaCentroDeCusto();

        } catch (HibernateException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao consultar o banco de dados " + e.getMessage(), ""));
        } catch (Throwable e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados! ", ""));
        }
        this.dptoModel = new CentroDeCustoDataModel(listaCentroDeCusto);
    }

    public void limpaLista() {
        if (dptoModel != null) {
            listaCentroDeCusto.clear();
            dptoModel = new CentroDeCustoDataModel(listaCentroDeCusto);
        }
    }

    public void alteraCentroDeCusto() {
        boolean valida = false;
        try {
            valida = centroDeCustoRN.updateCentroDeCusto(centroDeCustoSelected);
        } catch (HibernateException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao consultar o banco de dados " + e.getMessage(), ""));
        } catch (Throwable e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao alterar os dados! " + e.getMessage(), ""));
        }
        if (valida == false) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao alterar dados em brancos!", ""));
        } else {
            listaCentroDeCusto();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_INFO, "Operacao relizada com sucesso!!", ""));
        }
    }

    public void deleteCentroDeCusto() {
        boolean valida = false;
        try {
            valida = centroDeCustoRN.deletaCentroDeCusto(centroDeCustoSelected.getId());
        } catch (NullPointerException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Digite um valor valido", ""));
        } catch (HibernateException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados!\n " + e.getMessage(), ""));
        } catch (Throwable e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar os dados!\n " + e.getMessage(), ""));
        }
        if (valida == false) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Falha ao salvar dados em brancos!", ""));
        } else {
            listaCentroDeCusto();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_INFO, "Operacao relizada com sucesso!!", ""));
        }
    }

    public void btnAlterarCentroDeCustos() {
        RequestContext request = RequestContext.getCurrentInstance();
        try {
            if (centroDeCustoSelected.getId() != null && centroDeCustoSelected.getId() > 0) {
                request.addCallbackParam("sucesso", true);
            } else {
                request.addCallbackParam("sucesso", false);
            }
        } catch (NullPointerException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage("null", new FacesMessage(FacesMessage.SEVERITY_FATAL, "Selecione um campo!", ""));
        }
    }

    public CentroDeCustoRN getCentroDeCustoRN() {
        return centroDeCustoRN;
    }

    public void setCentroDeCustoRN(CentroDeCustoRN centroDeCustoRN) {
        this.centroDeCustoRN = centroDeCustoRN;
    }

    public CentroDeCusto getCentroDeCustoSelected() {
        return centroDeCustoSelected;
    }

    public void setCentroDeCustoSelected(CentroDeCusto centroDeCustoSelected) {
        this.centroDeCustoSelected = centroDeCustoSelected;
    }

    public List<CentroDeCusto> getListaCentroDeCusto() {
        return listaCentroDeCusto;
    }

    public void setListaCentroDeCusto(List<CentroDeCusto> listaCentroDeCusto) {
        this.listaCentroDeCusto = listaCentroDeCusto;
    }

    public CentroDeCustoDataModel getDptoModel() {
        return dptoModel;
    }

    public void setDptoModel(CentroDeCustoDataModel dptoModel) {
        this.dptoModel = dptoModel;
    }
    
    
}
